package com.huike.report.service;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface IReportService {

    /**
     * 新增客户统计
     */
    public LineChartVO contractStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 客户统计报表
     */
    public List<TbContract> contractReportList(TbContract tbContract);

    /**
     * 销售统计
     */
    public LineChartVO salesStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 销售统计部门报表
     */
    public List<Map<String, Object>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计渠道报表
     */
    public List<Map<String, Object>> channelStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属人报表
     */
    public List<Map<String, Object>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);


    /**
     * 渠道统计
     */
    public List<Map<String, Object>> chanelStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 活动统计
     */
    public List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);


    public List<TbClue> cluesStatisticsList(TbClue clue);

    /**
     * 活动渠道统计
     */
    public List<ActivityStatisticsVO> activityStatisticsList(TbActivity activity);


    public IndexVO getIndex(IndexStatisticsVo request);


    public List<Map<String, Object>> salesStatisticsForIndex(IndexStatisticsVo request);


    /**
     * 首页基本数据展示
     */
    IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime);

    //今日简报
    IndexTodayInfoVO getTodayInfo();
    //今日待办
    IndexTodoInfoVO getTodoInfo(@Param("beginCreateTime") String beginCreateTime, @Param("endCreateTime") String endCreateTime);

    //客户统计 - 学科客户分布
    List<Map<String, Object>> subjectStatistics(String beginCreateTime, String endCreateTime);
    // 线索统计 - 新增线索数量
    LineChartVO getCluesStatistics(String beginTime,String endTime) throws Exception;
    //线索统计 - 线索转化率
    VulnerabilityMapVO getVulnerabilityMap(String beginTime, String endTime);
    //首页 - 商机转化龙虎榜
    List<Map<String,Object>> getBusinessChangeStatistics(String beginCreateTime, String endCreateTime);
    //首页 - 线索转化龙虎榜
    List<Map<String,Object>> getClueChangeStatistics(String beginCreateTime, String endCreateTime);
}
